파이썬 기본자료형

스칼라형

파이썬은 숫자 데이터와 문자열, 불리언 값, 그리고 날짜와 시간을 다룰 수 있는 몇몇 내장 자료형을 제공한다.

자료형 설명
None 파이썬의 null 값(None은 예약어가 아니라 NoneType의 유일한 인스턴스이다.)
str 문자열 자료형
unicode 유니코드 문자열 자료형
float 배정밀도(64비트) 부동소수점 실수. double형이 따로 존재하지 않는다.
int 부호가 있는(음수 표현이 가능한) 정수. 값의 범위는 플랫폼에 의존적이다.
long 무한 정밀도의 부호가 있는 정수. int 값이 일정 값 이상이 되면 자동적으로 long형으로 변환된다.
bool 참(True)과 거짓(False)

None

None은 파이썬에서 사용하는 널(null) 값이다. 만약 어떤 함수에서 명시적으로 값을 반환하지 않으면 묵시적으로 None을 반환한다. None은 예약어가 아니라 NoneType의 유일한 인스턴스이다.

a = None
a is None # True

문자열(str)

파이썬의 문자열은 작은따옴표나 큰따옴표로 둘러싸서 표현할 수 있다. 개행문자가 포함된 여러 줄에 걸친 문자열은 3개의 작은따옴표나 큰따옴표로 둘러싼다.

lyric1 = 'My angel in the night, you are my love...'
lyric2 = "The love of my life."
lyric3 = """
Sometimes it's so hard to believe,
When a love can be so strong,
And faith gives me the strength,
and kept me going on.
"""

str 함수를 사용해서 문자열로 변환할 수 있다.

a = 5.6
str(a) # '5.6'

역슬래시는 이스케이프 문자로, 개행문자나 유니코드 글자 같은 특수목적의 글자를 나타내기 위해 사용한다. 문자열 앞에 r을 써서 문자열을 그 자체로만 해석하도록 할 수도 있다.

s = '12\\34' # 12\34
s = r'this\has\no\special\characters'
s # 'this\\has\\no\\special\\characters'
print(s) # this\has\no\special\characters

두 문자열을 더하면(+) 두 문자열을 이어붙인 새로운 문자열을 생성하며, 특정 문자열을 반복 출력하기 위해 곱연산(*)도 사용할 수 있다.

lyric1 = 'Would you reach out for tomorrow, '
lyric2 = "or try to turn back time?"
lyric1 + lyric2 # Would you reach out for tomorrow, or try to turn back time?

for i in range(int(input())):
print('*' * (i+1))

문자열 내 다른 문자열을 삽입하기 위한 코드는 다음과 같다.

my_string = 'Hello, what are doing?'
index = my_string.find('doing')
final_string = my_string[:index] + 'you ' + my_string[index:]
print(final_string)

my_string = 'Hello, what are doing?'
split_strings = my_string.split()
split_strings.insert(3, 'you')
final_string = ' '.join(split_strings)
print(final_string)

숫자 자료형(int, long, float)

숫자를 위한 파이썬의 주요 자료형은 int와 float이다. int 자료형의 크기는 플랫폼이 32비트 인지 64비트인지에 따 다르지만, 파이썬은 아주 큰 정수를 무한히 큰 정수를 저장할 수 있는 long자료형으로 변환해준다.

ival = 17239871
ival**6 # 26254519291092456596965462913230729701102721

부동소수점 숫자는 float 자료형으로 나타낸다. 내부적으로는 배정밀도(64비트)를 가지는 값이다. float형은 과학표기법으로 나타낼 수도 있다.

  • 부동소수점(Floating Point) 방식은 실수를 컴퓨터상에서 근사하여 표현할 때 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수를 따로 적는 것으로, 유효숫자를 나타내는 가수와 소수점의 위치를 풀이하는 지수로 나누어 표현한다.
fval = 7.123
fval2 = 6.78e-05 # 6.78 * 10**-5

파이썬3 버전에서는 정수 나눗셈은 정수를 반환하지 않고 부동소수점 숫자를 반환한다. 나눗셈의 결과가 정수가 아닐 경우 몫만을 돌려주는 C언어 형식의 정수 나눗셈은 // 연산자를 사용해 계산한다.

3 / 2 # 1.5
3 // 2 # 1

복소수의 허수 부분은 j로 나타낸다.

cval = 1 + 2j
cval * (1 - 2j) # (5+0j)

불리언(bool)

파이썬에서 불리언 값은 True와 False이다. 비교 및 기타 조건식은 True 아니면 False로 해석된다. 불리언 값은 and와 or 예약어로 조합할 수 있다.

not False # True
True and True # True
False or True # True
bool([]), bool([1,2,3]) # (False, True)
bool('Hello world!'), bool('') # (True, False)
bool(0), bool(1) # (False, True)


날짜와 시간 자료형

파이썬 내장 datetime 모듈은 datetime, date, 그리고 time 형을 지원한다.

from datetime import datetime, date, time

d = datetime(2022, 1, 24, 4, 57, 1) # 2022년 1월 24일 4시 57분 01초
print(d.day, d.minute) # 24 57
print(d.date(), d.time(), type(d)) # 2022-01-24 04:57:01 <class 'datetime.datetime'>

datetime의 필드를 치환하는 것도 가능하다. 다음 아래의 코드는 분과 초 필드를 0으로 치환해서 새로운 객체를 생성한다.

d.replace(minute=0, second=0) # datetime.datetime(2022, 1, 24, 4, 0)

두 datetime 객체의 차는 datetime.timedelta 객체를 반환하며, timedelta 객체를 datetime 객체에 더하면 그 만큼 시간이 지연된 datetime 객체를 얻을 수 있다.

d1 = datetime(2022, 1, 24, 4, 57, 0)
d2 = datetime(2019, 4, 16, 11, 18, 0)
delta = d1 - d2
delta # datetime.timedelta(days=1013, seconds=63540)
str(delta).split(',')[0].split(' ')[0] # '1013'
d2 + delta # datetime.datetime(2022, 1, 24, 4, 57)


형 변환

str, bool, int, float 자료형은 형 변환을 위한 함수로 사용된다.

s = '3.14159'
fval = float(s)
print(type(fval), fval) # <class 'float'> 3.14159
int(fval) # 3
bool(fval) # True

d = datetime(2022, 1, 24, 4, 57, 0)
str(d) # '2022-01-24 04:57:00'
str(d).split(' ') # ['2022-01-24', '04:57:00']
str(d).split(' ')[0] # '2022-01-24'
Share